import * as cc from 'cc';

const { ccclass, property } = cc._decorator;

@ccclass
export default class ConfigManager extends cc.Component {
    @property([cc.JsonAsset])
    configFiles: cc.JsonAsset[] = [];

    public configData: Record<string, any> = {};

    onLoad() {
        this.loadConfigData();
    }

    loadConfigData() {
        for (const config of this.configFiles) {
            const key = config.name; // 使用文件名作为标识符
            this.configData[key] = config.json;
            // 检查是否有配置更新，或者其他初始化操作
            this.checkForConfigUpdate(key);
        }
    }

    saveConfigData() {
        for (const key in this.configData) {
            const value = JSON.stringify(this.configData[key]);
            this._saveConfig(key, value);
        }
    }

    private _saveConfig(key: string, value: any) {
        cc.sys.localStorage.setItem(key, value);
    }

    getConfig(key: string) {
        if (this.configData[key]) {
            return this.configData[key];
        } else {
            cc.error(`Config key not found: ${key}`);
            return null;
        }
    }

    // 检查是否有新的配置数据可用
    private checkForConfigUpdate(key: string) {
        const data = cc.sys.localStorage.getItem(key);
        if (data) {
            this.updateConfig(key, data);
        }
    }

    // 可以添加其他方法来更新配置数据、重新加载配置等
    private updateConfig(key: string, newConfigData: any) {
        // 更新配置数据的逻辑
        try {
            this.configData[key] = JSON.parse(newConfigData);
        } catch {
            console.error('json read Fail');
        }
    }
}
